package com.study.design.pattern.pattern.behavioral.state;

/**
 * 已支付状态
 * 允许操作：取消、发货
 * 禁止操作：重复支付、收货
 */
public class PaidState implements OrderState {
    /**
     * 已支付状态下禁止重复支付
     */
    @Override
    public void pay(OrderContext context) {
        System.out.println("错误操作：订单已完成支付");
    }

    /**
     * 处理取消操作：进入退款流程
     */
    @Override
    public void cancel(OrderContext context) {
        System.out.println("取消订单，启动退款流程");
        context.setState(new RefundingState());
    }

    /**
     * 处理发货操作：将状态变更为已发货
     */
    @Override
    public void ship(OrderContext context) {
        System.out.println("商品已出库发货");
        context.setState(new ShippedState());
    }

    /**
     * 已支付但未发货状态下禁止收货
     */
    @Override
    public void receive(OrderContext context) {
        System.out.println("错误操作：商品尚未发货");
    }
}